/**
 * 主页 js 脚本
 */
//定义全局变量 记录用户 uid 和 fuid
let uid = 1;
let dfu = "0";
// const path = "/cloud/"
const path = "/cloud26/"
// 记录用户信息
let userMessage;
$(function () {
    // 页面加载完成执行方法
    // 更改文档加载成功 登陆模态框显示
    // $("#login_modal").modal("show");
    //默认打开的是根目录  根目录did=0
    setTableData(0);
});

/**
 * 给 table 中填充数据
 * @param did did
 */
function setTableData(did) {
    $("#tab").bootstrapTable({
        // 点击选中一行
        clickToSelect: true,
        // 添加按钮组
        toolbar: "#toolbar",
        // 指定 URL
        url: `${path}directory/open.action?did=${did}&uid=${uid}`,
        method: "get",
        cache: false,
        dataType: "json",
        // responseHandler由响应数据中获取table要显示的数据
        responseHandler: function (responseJson) {
            // 打印信息
            console.log(responseJson);
            // 判断是否登陆
            if (responseJson.status === 500) {
                alert(responseJson.message);
                //登陆模态框显示
                $("#login_modal").modal("show");
            }
            return {rows: responseJson.data};
        },
        // 定义 columns 属性，指定每列要显示的内容
        columns: [
            // 删除的多选框
            {
                checkbox: true
            },
            {
                title: "文件名",
                // field: "dname"
                // 格式化
                formatter: function (value, row, index) {
                    console.log("row :", row);
                    if (row.dtype === 1) {
                        // 是文件
                        // 字符串模版
                        return `<a  class="btn btn-default" href="${path}file/download/${row.fid}.action"><span class="glyphicon glyphicon-save " aria-hidden="true"></span>&emsp;${row.dname}</a>`;
                    } else {
                        // 是文件夹
                        return `<button type="button" class="btn btn-default" onclick="intoMyDirectory(${row.did});"><span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span>&emsp;${row.dname}</button>`;
                    }
                },
            },
            {
                title: "创建时间",
                field: "dcreateTimeStr",
            }
        ]
    });
}

/**
 * 登陆方法
 */
function login() {
    //获取登陆 form 的数据
    let uname = $("#login_form input[name='uname']").val();
    let upwd = $("#login_form  input[name='upwd']").val();
    console.log(uname, upwd);
    $.ajax({
        type: "post",
        data: "uname=" + uname + "&upwd=" + upwd,
        url: `${path}user/login.action`,
        async: true,
        cache: false,
        dataType: "json",
        success: function (responseEntity) {
            alert(responseEntity.message);
            if (responseEntity.status === 200) {
                //给uid赋值
                uid = responseEntity.data.uid;
                //登陆模态框隐藏
                $("#login_modal").modal("hide");
                //给表格设置数据
                setTableData(0);
                //把登陆者的名字设置在small_name中
                $("#small_name").text(responseEntity.data.uname + "的云盘");
            }
        }
    });
}

/**
 * 创建文件夹的方法
 */
function createMyDirectory() {
    //获取创建文件夹模态框的数据
    let dname = $("#create_modal input[name='dname']").val();
    $.ajax({
        type: "post",
        data: "dname=" + dname + "&uid=" + uid + "&dfu=" + dfu,
        url: `${path}directory/add.action`,
        async: true,
        dataType: "json",
        success: function (responseEntity) {
            alert(responseEntity.message);
            if (responseEntity.status === 200) {
                //添加文件夹的模态框隐藏
                $("#create_modal").modal("hide");
                //刷新表格的数据
                $("#tab").bootstrapTable("refresh");
            }
        }
    });

}

/**
 * 删除方法
 */
function deleteChoose() {
    let b = window.confirm("确定要删除？");
    if (!b) {
        return;
    }
    //获取所有被选中的checkbox行对应的score对象
    let $tab = $("#tab");
    let rowsColl = $tab.bootstrapTable("getSelections");
    console.log("删除方法 rowsColl 对象", rowsColl);
    for (let i = 0; i < rowsColl.length; i++) {
        $.ajax({
            type: "DELETE",
            url: `${path}directory/delete/${rowsColl[i].did}.action`,
            async: false,
            dataType: "json"
        });
    }
    $tab.bootstrapTable("refresh");//刷新表格的数据
    alert("删除成功！");
}

/**
 * 文件上传的方法
 */
function uploadMyFile() {
    //获取文件上传的form表单
    let formData = new FormData($("#upload_form")[0]);
    //给表单数据添加fuid
    formData.append("dfu", dfu);
    formData.append("uid", uid);
    //通过ajax模拟表单 实现文件
    $.ajax({
        data: formData,//请求参数
        dataType: "json",//期待的响应数据类型
        type: "post",//请求方式
        cache: false,//是否使用缓存
        contentType: false,//模拟表单  必须为false
        processData: false,//模拟表单  必须为false
        url: `${path}file/upload.action`,//请求资源的路径
        success: function (responseEntity) {
            console.log(responseEntity);
            alert(responseEntity.message);
            if (responseEntity.status === 200) {
                //隐藏添加模态框
                $("#upload_modal").modal("hide");
                $("#tab").bootstrapTable("refresh");
            }
        }
    });
}

/**
 * 进入文件夹的方法
 * @param did 文件夹 id
 */
function intoMyDirectory(did) {
    // 更新 dfu
    dfu = `${dfu}-${did}`;
    // 刷新表格
    $("#tab").bootstrapTable("refresh",
        {
            url: `${path}/directory/open.action?did=${did}&uid=${uid}`
        }
    );
}

/**
 * 退出登陆的方法
 */
function logout() {
    //通过ajax访问action
    $.ajax({
        //期待的响应数据类型
        dataType: "json",
        //请求方式
        type: "get",
        //是否使用缓存
        cache: false,
        //请求资源的路径
        url: `${path}user/logout/${uid}.action`,
        success: function (responseEntity) {
            alert(responseEntity.message);
            if (responseEntity.status === 200) {
                //清空表格的数据
                $('#tab').bootstrapTable('destroy');
                uid = undefined;
                dfu = "0";
                // 清空名字
                //把登陆者的名字设置在small_name中
                $("#small_name").text("云盘");
                //登陆模态框显示
                $("#login_modal").modal("show");
            }
        }
    });
}

/**
 * 后退一步
 */
function directoryBack() {
    let did;
    if (dfu !== "0") {
        //更改dfu
        dfu = dfu.substring(0, dfu.lastIndexOf("-"));
        did = dfu.substring(dfu.lastIndexOf("-") + 1);
    } else {
        did = 0;
    }
    $("#tab").bootstrapTable("refresh",
        {
            url: `${path}directory/open.action?did=${did}&uid=${uid}`
        });
    //刷新表格
}